#pragma once
#include "SampleBase.h"
#include "DirectXTK\VertexTypes.h"
#include "DirectXTK\CommonStates.h"
#include "DirectXTK\Effects.h"
#include "DirectXTK\PrimitiveBatch.h"
#include "DirectXTK\GeometricPrimitive.h"
#include "DirectXTK\SimpleMath.h"

using namespace DirectX;
using namespace DirectX::SimpleMath;
using namespace DX;
using Microsoft::WRL::ComPtr;

class NormalMapSample : public SampleBase
{
public:
	NormalMapSample(ID3D11Device* device, ID3D11DeviceContext* context);
	~NormalMapSample();

	NormalMapSample(const NormalMapSample&) = delete;
	NormalMapSample& operator= (const NormalMapSample&) = delete;
public:
	void Update(float dt) override;
	void Render() override;
	void GUI() override;
	void DrawFont() override;
private:
	Matrix m_world;
	Matrix m_view;
	Matrix m_proj;
	float radians;
	std::unique_ptr<CommonStates> m_states;
	std::unique_ptr<GeometricPrimitive> m_plane;
	std::unique_ptr<NormalMapEffect> m_effect;
	ComPtr<ID3D11InputLayout> m_inputLayout;
	ComPtr<ID3D11ShaderResourceView> m_texture;
	ComPtr<ID3D11ShaderResourceView> m_normalTexture;
};